package com.troila.cloud.simplify.utils;



import java.util.Date;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;

/**
 * json操作工具类
 * 
 * @author zhoubing
 *
 */
public final class FastJsonUtil {

    
    private static SerializeConfig mapping = new SerializeConfig(); 
    
    private static String dateFormat;  
    static {  
        dateFormat = "yyyy-MM-dd HH:mm:ss";  
        mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));
    } 
    
    /** 
    * @Title: obj2Json 
    * @Description:  将对象转换为JSON字符串
    * @param obj	//对象模型
    * @return String	//转换完毕的字符串
    * @author zhoubing
    * @date 2018年4月9日
    */ 
    public static String obj2Json(Object obj) {
        String str = JSON.toJSONString(obj,mapping,SerializerFeature.WriteMapNullValue);
        return str;
    }
    
    
    /** 
    * @Title: json2Obj 
    * @Description:   将JSON字符串转换为对象
    * @param text     //需要转换的字符串
    * @param clazz    //转换时使用的实体类型
    * @return V       //转换并返回的实体
    * @author zhoubing
    * @date 2018年4月9日
    */ 
    public static <V> V json2Obj(String text, Class<V> clazz) {
        V v =JSON.parseObject(text, clazz);
        return v;
     } 
    
    
    /** 
    * @Title: json2Map 
    * @Description: TODO 
    * @param json
    * @return Map
    * @author zhoubing
    * @date 2018年4月9日
    */ 
    @SuppressWarnings("rawtypes")
	public static Map json2Map(String json) {
    	Map jsonMap=null;
    	if(json!=null && !"".equals(json)) {
    		jsonMap = (Map)JSON.parse(json);
    	}
        return jsonMap;
    }
    
    /** 
    * @Title: main 
    * @Description: 测试函数
    * @param args void
    * @author zhoubing
    * @date 2018年4月9日
    */ 
    public static void main(String args[]) {
    	//String str="{\"accountId\":\"2\",\"gmtCreate\":null,\"gmtUpdate\":null,\"id\":1,\"password\":\"1234\",\"status\":0,\"userId\":null}";
    	
    }
}
